package cn.caskm.souvenirshopsystem.domain.po;

import cn.caskm.souvenirshopsystem.utils.DateUtils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("goods_order")
public class GoodsOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    @TableId(value = "order_id", type = IdType.AUTO)
    private Integer orderId;

    /**
     * 商品ID（单个商品时使用）
     */
    private Integer goodsId;

    /**
     * 商品ID列表（多个商品时使用，分号分隔，如"1;2;3"）
     */
    private String goodsIds;

    /**
     * 商品数量列表（对应goodsIds，分号分隔，如"2;1;3"）
     */
    private String goodsNums;

    /**
     * 下单人ID
     */
    private Integer orderUser;

    /**
     * 订单金额（实际支付金额）
     */
    private BigDecimal price;

    /**
     * 商品原价
     */
    private BigDecimal originalPrice;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 用户优惠券ID
     */
    private Long userCouponId;

    /**
     * 下单时间
     */
    @JsonFormat(pattern = DateUtils.DATE_TIME_FORMAT)
    private LocalDateTime createTime;

    /**
     * 购买数量
     */
    private Integer orderNum;

    /**
     * 订单流程状态：0下单1已付款2已发货3已收货4已评价5已取消6退单中7已退单8拒绝退单
     */
    private Integer orderStatus;

    /**
     * 退单理由
     */
    private String reason;


}
